TIP Sample App/SettingsViewController.m (122 lines of code) (raw):
//
// SettingsViewController.m
// TIP Sample App
//
// Created on 2/3/17.
// Copyright © 2020 Twitter. All rights reserved.
//
#import <TwitterImagePipeline/TwitterImagePipeline.h>
#import "AppDelegate.h"
#import "SettingsViewController.h"
@interface SettingsViewController ()
@end
@implementation SettingsViewController
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
self.navigationItem.title = @"Settings";
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scrollView.backgroundColor = [UIColor whiteColor];
scrollView.contentSize = self.view.bounds.size;
[self.view addSubview:scrollView];
CGFloat yProgress = 0;
CGRect viewBounds = self.view.bounds;
UILabel *label = nil;
yProgress += 3;
label = [[UILabel alloc] initWithFrame:CGRectMake(5, yProgress, viewBounds.size.width - 10, 30)];
label.tag = 'cntL';
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[scrollView addSubview:label];
yProgress += label.frame.size.height;
yProgress += 3;
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(5, yProgress, viewBounds.size.width - 10, 56)];
slider.tag = 'cnt#';
[slider addTarget:self action:@selector(didUpdateValue:) forControlEvents:UIControlEventValueChanged];
slider.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
slider.tintColor = self.view.tintColor;
slider.minimumTrackTintColor = self.view.tintColor;
slider.value = (MIN(MAX(APP_DELEGATE.searchCount, (NSUInteger)10), (NSUInteger)1000) - 10) / 990.f;
[self didUpdateValue:slider];
[scrollView addSubview:slider];
yProgress += slider.frame.size.height;
yProgress += 3;
label = [[UILabel alloc] initWithFrame:CGRectMake(5, yProgress, viewBounds.size.width - 10, 30)];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
label.text = @"WebP Tweet Images";
[scrollView addSubview:label];
UISwitch *webpSwitch = [[UISwitch alloc] init];
webpSwitch.on = APP_DELEGATE.searchWebP;
webpSwitch.tag = 'webp';
CGRect webpFrame = webpSwitch.frame;
webpFrame.origin.y = yProgress;
webpFrame.origin.x = (viewBounds.size.width - 5) - webpFrame.size.width;
webpSwitch.frame = webpFrame;
webpSwitch.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
[webpSwitch addTarget:self action:@selector(didUpdateValue:) forControlEvents:UIControlEventValueChanged];
[scrollView addSubview:webpSwitch];
yProgress += label.frame.size.height;
yProgress += 3;
label = [[UILabel alloc] initWithFrame:CGRectMake(5, yProgress, viewBounds.size.width - 10, 30)];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
label.text = @"Debug Overlay";
[scrollView addSubview:label];
UISwitch *debugSwitch = [[UISwitch alloc] init];
debugSwitch.on = [TIPImageViewFetchHelper isDebugInfoVisible];
debugSwitch.tag = 'dbg.';
CGRect debugFrame = debugSwitch.frame;
debugFrame.origin.y = yProgress;
debugFrame.origin.x = (viewBounds.size.width - 5) - debugFrame.size.width;
debugSwitch.frame = debugFrame;
debugSwitch.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
[debugSwitch addTarget:self action:@selector(didUpdateValue:) forControlEvents:UIControlEventValueChanged];
[scrollView addSubview:debugSwitch];
yProgress += label.frame.size.height;
yProgress += 3;
label = [[UILabel alloc] initWithFrame:CGRectMake(5, yProgress, viewBounds.size.width - 10, 30)];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
label.text = @"Placeholder Images";
[scrollView addSubview:label];
UISwitch *placeholderSwitch = [[UISwitch alloc] init];
placeholderSwitch.on = [TIPImageViewFetchHelper isDebugInfoVisible];
placeholderSwitch.tag = 'hldr';
CGRect placeholderFrame = placeholderSwitch.frame;
placeholderFrame.origin.y = yProgress;
placeholderFrame.origin.x = (viewBounds.size.width - 5) - placeholderFrame.size.width;
placeholderSwitch.frame = placeholderFrame;
placeholderSwitch.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
[placeholderSwitch addTarget:self action:@selector(didUpdateValue:) forControlEvents:UIControlEventValueChanged];
[scrollView addSubview:placeholderSwitch];
yProgress += label.frame.size.height;
}
- (void)didUpdateValue:(UIControl *)sender
{
switch (sender.tag) {
case 'cnt#':
{
UISlider *slider = (id)sender;
APP_DELEGATE.searchCount = (NSUInteger)(slider.value * 990.) + (NSUInteger)10;
UILabel *label = (id)[self.view viewWithTag:'cntL'];
label.text = [NSString stringWithFormat:@"Search Count (%tu)", APP_DELEGATE.searchCount];
break;
}
case 'webp':
{
UISwitch *s = (id)sender;
APP_DELEGATE.searchWebP = s.on;
break;
}
case 'dbg.':
{
UISwitch *s = (id)sender;
APP_DELEGATE.debugInfoVisible = s.on;
break;
}
case 'hldr':
{
UISwitch *s = (id)sender;
APP_DELEGATE.usePlaceholder = s.on;
break;
}
}
}
@end